home *** CD-ROM | disk | FTP | other *** search
/ Macintosh Technology Seed 1996 September / Macintosh Technology Seed (September 1996) (CDRM1437020).ISO / pc / qd3d15d6 / 15d6_sdk.exe / QD3D Win32 1.5d6 / Interfaces / QD3DStorage.h < prev    next >
C/C++ Source or Header  |  1996-08-21  |  8KB  |  266 lines

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DStorage.h                                             **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Abstraction to deal with various types of stream-based     **
  7.  **                    storage devices.                                         **
  8.  **                                                                          **
  9.  **                                                                          **
  10.  **                                                                          **
  11.  **     Copyright (C) 1992-1996 Apple Computer, Inc.  All rights reserved.     **
  12.  **                                                                          **
  13.  **                                                                          **
  14.  *****************************************************************************/
  15. #ifndef QD3DStorage_h
  16. #define QD3DStorage_h
  17.  
  18. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  19. #if defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  20.     #pragma options enum=small
  21. #endif
  22. #include <Types.h>
  23. #include <Files.h>
  24. #if defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  25.     #pragma options enum=reset
  26. #endif
  27. #endif  /*  OS_MACINTOSH  */
  28.  
  29. #if defined(OS_WIN32) && OS_WIN32
  30. #include <windows.h>
  31. #endif /* OS_WIN32 */
  32.  
  33. #if defined(THINK_C) || defined(__SC__)
  34.     #pragma options(!pack_enums, !align_arrays)
  35.     #pragma SC options align=power
  36. #elif defined(__MWERKS__)
  37.     #pragma enumsalwaysint on
  38.     #pragma align_array_members off
  39.     #pragma options align=native
  40. #elif defined(__PPCC__)
  41.     #pragma options align=power
  42. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  43.     #pragma options enum=int
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif    /* __cplusplus */
  49.  
  50. /******************************************************************************
  51.  **                                                                             **
  52.  **                                Storage Routines                             **
  53.  **                                                                             **
  54.  *****************************************************************************/
  55.  
  56. QD3D_EXPORT TQ3ObjectType Q3Storage_GetType(
  57.     TQ3StorageObject    storage);
  58.  
  59. QD3D_EXPORT TQ3Status Q3Storage_GetSize(
  60.     TQ3StorageObject    storage,
  61.     unsigned long        *size);
  62.  
  63. /* 
  64.  *    Reads "dataSize" bytes starting at offset in storage, copying into data. 
  65.  *    sizeRead returns the number of bytes filled in. 
  66.  *    
  67.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeRead
  68.  */
  69.  
  70. QD3D_EXPORT TQ3Status Q3Storage_GetData(
  71.     TQ3StorageObject    storage,
  72.     unsigned long        offset,
  73.     unsigned long        dataSize,
  74.     unsigned char        *data,
  75.     unsigned long        *sizeRead);
  76.  
  77. /* 
  78.  *    Write "dataSize" bytes starting at offset in storage, copying from data. 
  79.  *    sizeWritten returns the number of bytes filled in. 
  80.  *    
  81.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeWritten
  82.  */
  83.  
  84. QD3D_EXPORT TQ3Status Q3Storage_SetData(
  85.     TQ3StorageObject    storage,
  86.     unsigned long        offset,
  87.     unsigned long        dataSize,
  88.     const unsigned char    *data,
  89.     unsigned long        *sizeWritten);
  90.  
  91. /******************************************************************************
  92.  **                                                                             **
  93.  **                             Memory Storage Prototypes                         **
  94.  **                                                                             **
  95.  *****************************************************************************/
  96.  
  97. QD3D_EXPORT TQ3ObjectType Q3MemoryStorage_GetType(
  98.     TQ3StorageObject        storage);
  99.  
  100. /*
  101.  * These calls COPY the buffer into QD3D space
  102.  */
  103. QD3D_EXPORT TQ3StorageObject Q3MemoryStorage_New(
  104.     const unsigned char        *buffer,
  105.     unsigned long            validSize);
  106.  
  107. QD3D_EXPORT TQ3Status Q3MemoryStorage_Set(
  108.      TQ3StorageObject        storage,
  109.     const unsigned char        *buffer,
  110.     unsigned long            validSize);
  111.  
  112. /*
  113.  * These calls use the pointer given - you must dispose it when you're through
  114.  */
  115. QD3D_EXPORT TQ3StorageObject Q3MemoryStorage_NewBuffer(
  116.     unsigned char            *buffer,
  117.     unsigned long            validSize,
  118.     unsigned long            bufferSize);
  119.  
  120. QD3D_EXPORT TQ3Status Q3MemoryStorage_SetBuffer(
  121.      TQ3StorageObject        storage,
  122.     unsigned char            *buffer,
  123.     unsigned long            validSize,
  124.     unsigned long            bufferSize);
  125.  
  126. QD3D_EXPORT TQ3Status Q3MemoryStorage_GetBuffer(
  127.      TQ3StorageObject        storage,
  128.     unsigned char            **buffer,
  129.     unsigned long            *validSize,
  130.     unsigned long            *bufferSize);
  131.  
  132. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  133.  
  134. /******************************************************************************
  135.  **                                                                             **
  136.  **                                Macintosh Handles Prototypes                 **
  137.  **                                                                             **
  138.  *****************************************************************************/
  139.  
  140. /* Handle Storage is a subclass of Memory Storage */
  141.  
  142. QD3D_EXPORT TQ3StorageObject Q3HandleStorage_New(
  143.     Handle                    handle,
  144.     unsigned long            validSize);
  145.  
  146. QD3D_EXPORT TQ3Status Q3HandleStorage_Set(
  147.      TQ3StorageObject        storage,
  148.     Handle                    handle,
  149.     unsigned long            validSize);
  150.  
  151. QD3D_EXPORT TQ3Status Q3HandleStorage_Get(
  152.      TQ3StorageObject        storage,
  153.      Handle                    *handle,
  154.     unsigned long            *validSize);
  155.  
  156. /******************************************************************************
  157.  **                                                                             **
  158.  **                                Macintosh Storage Prototypes                 **
  159.  **                                                                             **
  160.  *****************************************************************************/
  161.  
  162. QD3D_EXPORT TQ3StorageObject Q3MacintoshStorage_New(                    
  163.     short                    fsRefNum);    /* Note: This storage is assumed open*/
  164.  
  165. QD3D_EXPORT TQ3Status Q3MacintoshStorage_Set(
  166.      TQ3StorageObject        storage,
  167.     short                    fsRefNum);
  168.  
  169. QD3D_EXPORT TQ3Status Q3MacintoshStorage_Get(
  170.      TQ3StorageObject        storage,
  171.     short                    *fsRefNum);
  172.     
  173. QD3D_EXPORT TQ3ObjectType Q3MacintoshStorage_GetType(
  174.     TQ3StorageObject        storage);
  175.  
  176.  
  177. /******************************************************************************
  178.  **                                                                             **
  179.  **                            Macintosh FSSpec Storage Prototypes                 **
  180.  **                                                                             **
  181.  *****************************************************************************/
  182.  
  183. QD3D_EXPORT TQ3StorageObject Q3FSSpecStorage_New(
  184.     const FSSpec            *fs);
  185.  
  186. QD3D_EXPORT TQ3Status Q3FSSpecStorage_Set(
  187.      TQ3StorageObject        storage,
  188.     const FSSpec            *fs);
  189.  
  190. QD3D_EXPORT TQ3Status Q3FSSpecStorage_Get(
  191.      TQ3StorageObject        storage,
  192.     FSSpec                    *fs);
  193.  
  194. #endif  /*  OS_MACINTOSH  */
  195.  
  196. #if defined(OS_WIN32) && OS_WIN32
  197.  
  198. /******************************************************************************
  199.  **                                                                             **
  200.  **                            Win32 HANDLE Storage Prototypes                     **
  201.  **                                                                             **
  202.  *****************************************************************************/
  203.  
  204. QD3D_EXPORT TQ3StorageObject Q3Win32Storage_New(
  205.     const HANDLE            hFile);
  206.  
  207. QD3D_EXPORT TQ3Status Q3Win32Storage_Set(
  208.      TQ3StorageObject        storage,
  209.     const HANDLE            hFile);
  210.  
  211. QD3D_EXPORT TQ3Status Q3Win32Storage_Get(
  212.      TQ3StorageObject        storage,
  213.     const HANDLE            *hFile);
  214.  
  215. #endif  /*  OS_WIN32  */
  216.  
  217. /******************************************************************************
  218.  **                                                                             **
  219.  **                                    Unix Prototypes                             **
  220.  **                                                                             **
  221.  *****************************************************************************/
  222.  
  223. QD3D_EXPORT TQ3StorageObject Q3UnixStorage_New(
  224.     FILE                    *storage);
  225.  
  226. QD3D_EXPORT TQ3Status Q3UnixStorage_Set(
  227.      TQ3StorageObject        storage,
  228.     FILE                    *stdFile);
  229.  
  230. QD3D_EXPORT TQ3Status Q3UnixStorage_Get(
  231.      TQ3StorageObject        storage,
  232.     FILE                    **stdFile);
  233.     
  234. QD3D_EXPORT TQ3ObjectType Q3UnixStorage_GetType(
  235.     TQ3StorageObject        storage);
  236.  
  237.  
  238. /******************************************************************************
  239.  **                                                                             **
  240.  **                                Unix Path Prototypes                         **
  241.  **                                                                             **
  242.  *****************************************************************************/
  243.  
  244. QD3D_EXPORT TQ3StorageObject Q3UnixPathStorage_New(                    
  245.     const char                *pathName);                /* C string */
  246.  
  247. QD3D_EXPORT TQ3Status Q3UnixPathStorage_Set(            
  248.      TQ3StorageObject        storage,
  249.     const char                *pathName);                /* C string */
  250.  
  251. QD3D_EXPORT TQ3Status Q3UnixPathStorage_Get(            
  252.      TQ3StorageObject        storage,
  253.     char                    *pathName);                /* pathName is a buffer */
  254.  
  255. #ifdef __cplusplus
  256. }
  257. #endif    /* __cplusplus */
  258.  
  259. #if defined(__MWERKS__)
  260.     #pragma enumsalwaysint reset
  261. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  262.     #pragma options enum=reset
  263. #endif
  264.  
  265. #endif /* QD3DStorage_h */
  266.